#!/usr/bin/python





#importo la red
import red
reload(red)
red = red.red



#modulo de grafos
import networkx as nx
import matplotlib.pyplot as plt

#creo el multigrafo
G=nx.MultiDiGraph()
autores = red.keys()

#importo el diccionario nombres-id
import nombresId_dic
reload(nombresId_dic)
nombres = nombresId_dic.nombres


#armo el inverso de nombres
ids={}
for au in nombres:
	ids[ nombres[au] ] = au


for autor1 in autores:
	for autor2 in red[autor1].keys():
		dic = red[autor1]
		if autor2 in nombres.keys():
			 if dic[autor2]> 0:
				peso = 1/ float((dic[autor2]*10))
				G.add_edge(nombres[autor1],nombres[autor2], weight= peso )

elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] >0.5]
esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <=0.5]

def peso(n1,n2):
	return G[n1][n2][0]['weight']

def esVecino(n1,n2):
	 return n2 in G.neighbors(n1)


#ver informe para ver q significa cada uno
G_debil = nx.Graph()
G_fuerte = nx.Graph()



for i in range(0,174):
	for j in range(i+1,174):
	
		if i in G.neighbors(j):
			if j in G.neighbors(i):
				pesoN = (peso(i,j)+peso(j,i))/2.0
				G_debil.add_edge(i,j,weight=pesoN)
				G_fuerte.add_edge(i,j,weight=pesoN)
				
				
		else:
			if j in G.neighbors(i):
				pesoN = peso(i,j)/2.0
				G_debil.add_edge(i,j,weight=pesoN)





debil=open("matrizDebil",'w')	
fuerte=open("matrizFuerte",'w')	




distanciasF =  nx.algorithms.shortest_paths.generic.shortest_path_length(G_fuerte, weight=True)                    
distanciasD =  nx.algorithms.shortest_paths.generic.shortest_path_length(G_debil, weight=True)                    


pesoDebil = 0
pesoFuerte = 0

G_fuerte

for i in range(0,174):
	for j in range(0,174):
		if i in distanciasF.keys() and j in distanciasF[i].keys():
				pesoFuerte = distanciasF[i][j]
		else:
	
			pesoFuerte = -1
	
		fuerte.write(str(pesoFuerte)+'\t')
	
	fuerte.write('\n')

for i in range(0,174):
	for j in range(0,174):
		if i in distanciasD.keys() and j in distanciasD[i].keys():
			pesoDebil = distanciasD[i][j]
			
		else:
			pesoDebil = -1
			
		debil.write(str(pesoDebil)+'\t')
		
	debil.write('\n')
	
	
	




